package com.xu.system.controller;

import com.xu.base.model.BaseSelectVo;
import com.xu.mybatis.model.PageInfo;
import com.xu.system.model.pojo.dict.*;
import com.xu.system.service.IDictService;
import jakarta.validation.Valid;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * 数据字典控制器
 *
 * @Author: 许乾伟
 * @Date: 2024/3/21 15:13
 */
@RestController
@RequestMapping("dict")
public class DictController {
    @Autowired
    IDictService dictService;

    /**
     * 新增字典
     * @param req 新增字典请求
     * @return true:成功 false:失败
     */
    @PostMapping("add")
    public Boolean add(@Valid @RequestBody AddDictReq req) {
        return dictService.addDict(req);
    }
    /**
     * 编辑字典
     * @param req 编辑字典请求
     * @return true:成功 false:失败
     */
    @PostMapping("edit")
    public Boolean edit(@Valid @RequestBody EditDictReq req) {
        return dictService.editDict(req);
    }
    /**
     * 删除字典
     * @param dictId 字典id
     * @return true:成功 false:失败
     */
    @PostMapping("del/{dictId}")
    public Boolean del(@PathVariable("dictId") Long dictId) {
        return dictService.delDict(dictId);
    }
    /**
     * 查询字典分页
     * @param req 查询字典请求
     * @return 字典分页列表
     */
    @GetMapping("page")
    public PageInfo<DictVo> page(@Valid QueryDictReq req) {
        return dictService.queryPageDict(req);
    }

    /**
     * 新增字典项
     * @param req 新增字典项请求
     * @return true:成功 false:失败
     */
    @PostMapping("item/add")
    public Boolean addItem(@Valid @RequestBody AddDictItemReq req) {
        return dictService.addDictItem(req);
    }
    /**
     * 编辑字典项
     * @param req 编辑字典项请求
     * @return true:成功 false:失败
     */
    @PostMapping("item/edit")
    public Boolean editItem(@Valid @RequestBody EditDictItemReq req) {
        return dictService.editDictItem(req);
    }
    /**
     * 删除字典项
     * @param dictItemId 字典项id
     * @return true:成功 false:失败
     */
    @PostMapping("item/del/{dictItemId}")
    public Boolean delItem(@PathVariable("dictItemId") Long dictItemId) {
        return dictService.delDictItem(dictItemId);
    }
    /**
     * 查询字典项分页
     * @param req 查询字典项请求
     * @return 字典项分页列表
     */
    @GetMapping("item/page")
    public PageInfo<DictItemVo> pageItem(@Valid QueryDictItemReq req) {
        return dictService.queryPageDictItem(req);
    }

    /**
     * 字典下拉列表
     * @param dictCode
     * @return
     */
    @GetMapping("selectListByDictCode")
    public List<BaseSelectVo<String,String>> selectListByDictCode(@RequestParam("dictCode") String dictCode){
        return dictService.selectListByDictCode(dictCode);
    }
}
